/*
* sop工序表模块
*/
const express = require('express');
const router = express.Router();
// 引入数据库
const db = require("../../config/db");
// 引入时间包
const moment = require("moment");
// 引入方法库
const { toCamelCase, toUnderlineCase, verifyToken, recursionGenerateTree } = require("../../config/utils");
// 引入日志
const log = require("../log");

// 查询*sop*工序列表 模糊查询
router.post('/selectProcess', (req, res) => {
    console.log("===========查询*sop*工序列表 模糊查询============");
    const { name } = req.body;
    const sql = `select * from sop_process where name like'%${name}%'`;
    db.query("查询*sop*工序列表 模糊查询", sql, (err, result) => {
        if (err) {
            res.send({ code: 500, msg: '查询*sop*工序列表 模糊查询失败' })
            return
        }
        // 变量Json数组key转成下划线第一个大写
        result = result.map(item => {
            return toCamelCase(item)
        })
        res.send({
            code: 200,
            msg: '查询*sop*工序列表 模糊查询成功',
            data: result,
        })
    })
})

// 新增*sop工序*
router.post("/addProcess", (req, res) => {
    console.log("=========== 新增*sop工序*接口============");
    // 获取参数
    let { deptName, parentId, status, orderNum, leader, phone, email, tableData } = req.body;
    // 截取id字段
    parentId = parentId.split("-")[1];
    // 获取创建人
    let { username } = verifyToken(req.headers.authorization);
    // 获取创建时间
    let createTime = moment().format("YYYY-MM-DD HH:mm:ss");
    // 判断当前工序名称是否存在
    let sql_check = `select * from sop_process where name = '${deptName}'`;
    db.query("判断当前工序名称是否存在", sql_check, (err, sql_check_result) => {
        if (err) {
            res.send({ code: 500, msg: "判断当前工序名称是否存在失败", data: err });
            return;
        }
        if (sql_check_result.length > 0) {
            res.send({ code: 500, msg: "已存在相同工序名称，请重新输入！" });
            return;

        }
        // 插入数据库
        let sql = `insert into sop_process (name, status, create_by, create_time, leader, phone, email, table_data) values 
        ('${deptName}', '${status}', '${username}', '${createTime}', ${leader ? "'" + leader + "'" : null}, 
        ${phone ? "'" + phone + "'" : null}, ${email ? "'" + email + "'" : null}, ${tableData ? "'" + tableData + "'" : null})`;
        db.query("新增*sop工序*", sql, (err1, result) => {
            if (err1) {
                res.send({ code: 500, msg: "新增*sop工序*失败", data: err1 });
                return;
            }
            if (result.affectedRows > 0) {
                // 在关联表中插入组件id和工序id
                let sql2 = `insert into sop_components_sop_process (component_id, process_id, order_num) values 
                ('${parentId}', '${result.insertId}', '${orderNum}')`;
                db.query("新增*sop工序*关联*组件与工序*表", sql2, (err2, result2) => {
                    if (err2) {
                        res.send({ code: 500, msg: "新增*sop工序*关联*组件与工序*表失败", data: err2 });
                        return;
                    }
                    if (result2.affectedRows > 0) {
                        res.send({ code: 200, msg: "新增*sop工序*成功" });
                    } else {
                        res.send({ code: 500, msg: "新增*sop工序*关联*组件与工序*表失败" });
                    }
                })

            } else {
                res.send({ code: 500, msg: "新增*sop工序*失败" });
            }
        })
    })
})

// 修改工序 名称
router.post("/updateProcess", (req, res) => {
    console.log("=========== 修改工序 名称接口============");
    // 获取参数
    let { deptId, deptName, parentId, status, orderNum, leader, phone, email, tableData } = req.body;
    // 截取id字段
    deptId = deptId.split("-")[1];
    // 获取修改人
    let { username } = verifyToken(req.headers.authorization);
    // 获取修改时间
    let updateTime = moment().format("YYYY-MM-DD HH:mm:ss");
    // 工序名称修改, 需要判断是否复用
    // 判断组件工序关联表是否存在两个以上数据  LIMIT 1 OFFSET 1;  -- 存在第二条时返回1，否则无结果
    let sql_check = `select 1 from sop_components_sop_process where process_id = '${deptId}' LIMIT 1 OFFSET 1`;
    db.query("判断组件工序关联表是否存在两个以上数据", sql_check, (err, sql_check_result) => {
        if (err) {
            res.send({ code: 500, msg: "判断组件工序关联表是否存在两个以上数据失败", data: err });
            return;
        }
        if (sql_check_result.length > 0) {
            res.send({ code: 500, msg: "该工序下绑定多个组件，无法修改工序！" });
            return;
        } else {
            // 判断当前工序名称是否存在
            let sql_check = `select * from sop_process where name = '${deptName}' and id != '${deptId}'`;
            db.query("判断当前工序名称是否存在", sql_check, (err, sql_check_result) => {
                if (err) {
                    res.send({ code: 500, msg: "判断当前工序名称是否存在失败", data: err });
                    return;
                }
                if (sql_check_result.length > 0) {
                    res.send({ code: 500, msg: "已存在相同工序名称，请重新输入！" });
                    return;

                } else {
                    // 修改工序名称, 排序，图片，安装后效果，备件信息
                    let update_sql = `update sop_process set name = '${deptName}', leader = ${leader ? "'" + leader + "'" : null}, phone = ${phone ? "'" + phone + "'" : null}, 
                    email = ${email ? "'" + email + "'" : null}, table_data = ${tableData ? "'" + tableData + "'" : null},
                    update_by = '${username}', update_time = '${updateTime}'
                    where id = ${deptId}`
                    db.query("修改工序名称, 排序，图片，安装后效果，备件信息", update_sql, (err, result) => {
                        if (err) {
                            res.send({ code: 500, msg: "修改工序名称, 排序，图片，安装后效果，备件信息失败", data: err });
                            return;
                        }
                        if (result.affectedRows > 0) {
                            res.send({ code: 200, msg: "修改工序名称, 排序，图片，安装后效果，备件信息成功" });
                        } else {
                            res.send({ code: 500, msg: "修改工序名称, 排序，图片，安装后效果，备件信息失败" });
                        }
                    })
                }
            })
        }
    })
    // // 查询工序名称是否修改
    // let sql_check_name = `select name from sop_process where id = '${deptId}'`;
    // db.query("查询工序名称是否修改", sql_check_name, (err, sql_check_name_result) => {
    //     if (err) {
    //         res.send({ code: 500, msg: "查询工序名称是否修改失败", data: err });
    //         return;
    //     }
    //     if (sql_check_name_result[0].name == deptName){
    //         res.send({ code: 200, msg: "工序名称未修改，无需判断" });
    //     }else{

    //     }
    // })
})


module.exports = router;